Шаг 355 - 1C и ошибки – опасно как не когда.

Язык 1С очень устойчив к ошибкам. Настолько что ее и заметить не так легко. Если Вы имеете опыт программирования на Pascal или С++ вы будут надеяться что среда разработки проконтролирует многие ошибки. В данном случае это не так. Посмотрите шаг Шаг 354 -Получаем счет. В нем ошибка. Вместо

 Ит.ПолучитьСчет(СчетПоКоду("100"));

Нужно написать

 Ит.ПолучитьСчет(,СчетПоКоду("100"));

Так как первый параметр это номер а второй счет. Несмотря на это мы получаем правдоподобные результаты. И даже если будет пытаться обработать ошибку при неправильном написании мы будет получать правильный результат. Смотрите ошибка есть, но она не фиксируется.

Перем ОшибкаВПрограмме;


Процедура ПолучитьСчетИзИтога(Итог,СчетДляПолучения) 
   Если (Итог.ПолучитьСчет(СчетДляПолучения)=0) Тогда
            ОшибкаВПрограмме=1;
     КонецЕсли;
КонецПроцедуры

Процедура Сформировать() 
     Перем счет100;
     Перем счет200;  
    ОшибкаВПрограмме=0;
     Т = СоздатьОбъект("Таблица");
     
   
      
          Ит = СоздатьОбъект("БухгалтерскиеИтоги"); 
          Ит.ВыполнитьЗапрос(ДатаНач, ДатаКон, "200,100");   
            вместе=Ит.СКД();
           Ит.ВыбратьСчета();
            ПолучитьСчетИзИтога(Ит,"100");
            счет100=Ит.СКД();  
            ПолучитьСчетИзИтога(Ит,"300");
            счет200=Ит.СКД();   
          
           Если ОшибкаВПрограмме=1 Тогда
                 Предупреждение("Ошибка счета, Программиста к начальнику");
                 Возврат;
            КонецЕсли;            
            
      Т.ВывестиСекцию("Секция_1");       
      Т.ТолькоПросмотр(1);
     Т.Показать()      
КонецПроцедуры

Самое прикольное, что результат правильный. И все хорошо, но только стоит запросить еще один счет Вы получите ошибку.

.........
            ПолучитьСчетИзИтога(Ит,"100");
            счет100=Ит.СКД();  
            ПолучитьСчетИзИтога(Ит,"300");
            счет200=Ит.СКД();   
            ПолучитьСчетИзИтога(Ит,"200");
.........

355_1.gif (6171 b)

Конечно, это легко исправляется.

Ит.ПолучитьСчет(,СчетПоКоду("100"));

Волнует меня только одно. Не слишком ли это. Ведь мы с Вами бухгалтерию ведем. Отчетность всякую делаем и сдаем в налоговую, а при более серьезном использовании и бизнес как таковой завязан на 1С. Так не слишком ли мало контроля? Ведь есть же в С++ уровне сообщений об ошибках. Что мешает сделать в 1С то же самое. Уважаемые господа из 1С, может я и заблуждаюсь, но такая среда разработки очень и очень опасна, если организации вкатают штраф в пару лимонов за вот такой казус это уже другой разговор.

Hosted by uCoz